Passed
Push — task/application-profile-react... ( 95a834...f06e77 )
by Yonathan
08:39
created

ApplicationReviewRoot   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 83
dl 0
loc 101
rs 10
c 0
b 0
f 0
1
/* eslint camelcase: "off" */
2
import React from "react";
3
import ReactDOM from "react-dom";
4
import { useDispatch } from "react-redux";
5
import { useIntl } from "react-intl";
6
import { ApplicationReview } from "../../models/types";
7
import ApplicationReviewWithNav from "./ApplicationReviewWithNav";
8
import { Portal } from "../../models/app";
9
import { DispatchType } from "../../configureStore";
10
import { loadingMessages } from "../Application/applicationMessages";
11
import { useFetchApplication } from "../../hooks/applicationHooks";
12
import { updateApplicationReview } from "../../store/Application/applicationActions";
13
import RootContainer from "../RootContainer";
14
15
interface ApplicationReviewRootProps {
16
  applicationId: number;
17
  portal: Portal;
18
}
19
20
const ApplicationReviewRoot: React.FC<ApplicationReviewRootProps> = ({
21
  applicationId,
22
  portal,
23
}): React.ReactElement => {
24
  const intl = useIntl();
25
  const dispatch = useDispatch<DispatchType>();
26
27
  const application = useFetchApplication(applicationId, dispatch);
28
  const handleUpdateApplicationReview = async (
29
    editedApplicationReview: ApplicationReview,
30
  ): Promise<void> => {
31
    await dispatch(updateApplicationReview(editedApplicationReview));
32
  };
33
34
  return (
35
    <div className="applicant-review container--layout-xl">
36
      {application === null ? (
37
        <h2
38
          data-c-heading="h2"
39
          data-c-align="center"
40
          data-c-padding="top(2) bottom(2)"
41
        >
42
          {intl.formatMessage(loadingMessages.loading)}
43
        </h2>
44
      ) : (
45
        <ApplicationReviewWithNav
46
          application={application}
47
          handleUpdateApplicationReview={handleUpdateApplicationReview}
48
          portal={portal}
49
        />
50
      )}
51
    </div>
52
  );
53
};
54
55
export default ApplicationReviewRoot;
56
57
const container = document.getElementById("application-review-container");
58
if (container !== null) {
59
  if ("applicationId" in container.dataset && "portal" in container.dataset) {
60
    const applicationId = Number(container.dataset.applicationId as string);
61
    const portal = container.dataset.portal as Portal;
62
63
    ReactDOM.render(
64
      <RootContainer>
65
        <ApplicationReviewRoot applicationId={applicationId} portal={portal} />
66
      </RootContainer>,
67
      container,
68
    );
69
  }
70
}
71